<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<style>
body {
  font-family: Helvetica, arial, sans-serif;
  font-size: 14px;
  line-height: 1.6;
  padding-top: 10px;
  padding-bottom: 10px;
  background-color: white;
  padding: 30px; }

body > *:first-child {
  margin-top: 0 !important; }
body > *:last-child {
  margin-bottom: 0 !important; }

a {
  color: #4183C4; }
a.absent {
  color: #cc0000; }
a.anchor {
  display: block;
  padding-left: 30px;
  margin-left: -30px;
  cursor: pointer;
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0; }

h1, h2, h3, h4, h5, h6 {
  margin: 20px 0 10px;
  padding: 0;
  font-weight: bold;
  -webkit-font-smoothing: antialiased;
  cursor: text;
  position: relative; }

h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
  background: url() no-repeat 10px center;
  text-decoration: none; }

h1 tt, h1 code {
  font-size: inherit; }

h2 tt, h2 code {
  font-size: inherit; }

h3 tt, h3 code {
  font-size: inherit; }

h4 tt, h4 code {
  font-size: inherit; }

h5 tt, h5 code {
  font-size: inherit; }

h6 tt, h6 code {
  font-size: inherit; }

h1 {
  font-size: 28px;
  color: black; }

h2 {
  font-size: 24px;
  border-bottom: 1px solid #cccccc;
  color: black; }

h3 {
  font-size: 18px; }

h4 {
  font-size: 16px; }

h5 {
  font-size: 14px; }

h6 {
  color: #777777;
  font-size: 14px; }

p, blockquote, ul, ol, dl, li, table, pre {
  margin: 15px 0; }

hr {
  background: transparent url() repeat-x 0 0;
  border: 0 none;
  color: #cccccc;
  height: 4px;
  padding: 0;
}

body > h2:first-child {
  margin-top: 0;
  padding-top: 0; }
body > h1:first-child {
  margin-top: 0;
  padding-top: 0; }
  body > h1:first-child + h2 {
    margin-top: 0;
    padding-top: 0; }
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
  margin-top: 0;
  padding-top: 0; }

a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
  margin-top: 0;
  padding-top: 0; }

h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
  margin-top: 0; }

li p.first {
  display: inline-block; }
li {
  margin: 0; }
ul, ol {
  padding-left: 30px; }

ul :first-child, ol :first-child {
  margin-top: 0; }

dl {
  padding: 0; }
  dl dt {
    font-size: 14px;
    font-weight: bold;
    font-style: italic;
    padding: 0;
    margin: 15px 0 5px; }
    dl dt:first-child {
      padding: 0; }
    dl dt > :first-child {
      margin-top: 0; }
    dl dt > :last-child {
      margin-bottom: 0; }
  dl dd {
    margin: 0 0 15px;
    padding: 0 15px; }
    dl dd > :first-child {
      margin-top: 0; }
    dl dd > :last-child {
      margin-bottom: 0; }

blockquote {
  border-left: 4px solid #dddddd;
  padding: 0 15px;
  color: #777777; }
  blockquote > :first-child {
    margin-top: 0; }
  blockquote > :last-child {
    margin-bottom: 0; }

table {
  padding: 0;border-collapse: collapse; }
  table tr {
    border-top: 1px solid #cccccc;
    background-color: white;
    margin: 0;
    padding: 0; }
    table tr:nth-child(2n) {
      background-color: #f8f8f8; }
    table tr th {
      font-weight: bold;
      border: 1px solid #cccccc;
      margin: 0;
      padding: 6px 13px; }
    table tr td {
      border: 1px solid #cccccc;
      margin: 0;
      padding: 6px 13px; }
    table tr th :first-child, table tr td :first-child {
      margin-top: 0; }
    table tr th :last-child, table tr td :last-child {
      margin-bottom: 0; }

img {
  max-width: 100%; }

span.frame {
  display: block;
  overflow: hidden; }
  span.frame > span {
    border: 1px solid #dddddd;
    display: block;
    float: left;
    overflow: hidden;
    margin: 13px 0 0;
    padding: 7px;
    width: auto; }
  span.frame span img {
    display: block;
    float: left; }
  span.frame span span {
    clear: both;
    color: #333333;
    display: block;
    padding: 5px 0 0; }
span.align-center {
  display: block;
  overflow: hidden;
  clear: both; }
  span.align-center > span {
    display: block;
    overflow: hidden;
    margin: 13px auto 0;
    text-align: center; }
  span.align-center span img {
    margin: 0 auto;
    text-align: center; }
span.align-right {
  display: block;
  overflow: hidden;
  clear: both; }
  span.align-right > span {
    display: block;
    overflow: hidden;
    margin: 13px 0 0;
    text-align: right; }
  span.align-right span img {
    margin: 0;
    text-align: right; }
span.float-left {
  display: block;
  margin-right: 13px;
  overflow: hidden;
  float: left; }
  span.float-left span {
    margin: 13px 0 0; }
span.float-right {
  display: block;
  margin-left: 13px;
  overflow: hidden;
  float: right; }
  span.float-right > span {
    display: block;
    overflow: hidden;
    margin: 13px auto 0;
    text-align: right; }

code, tt {
  margin: 0 2px;
  padding: 0 5px;
  white-space: nowrap;
  border: 1px solid #eaeaea;
  background-color: #f8f8f8;
  border-radius: 3px; }

pre code {
  margin: 0;
  padding: 0;
  white-space: pre;
  border: none;
  background: transparent; }

.highlight pre {
  background-color: #f8f8f8;
  border: 1px solid #cccccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px; }

pre {
  background-color: #f8f8f8;
  border: 1px solid #cccccc;
  font-size: 13px;
  line-height: 19px;
  overflow: auto;
  padding: 6px 10px;
  border-radius: 3px; }
  pre code, pre tt {
    background-color: transparent;
    border: none; }

sup {
    font-size: 0.83em;
    vertical-align: super;
    line-height: 0;
}
* {
	-webkit-print-color-adjust: exact;
}
@media screen and (min-width: 914px) {
    body {
        width: 854px;
        margin:0 auto;
    }
}
@media print {
	table, pre {
		page-break-inside: avoid;
	}
	pre {
		word-wrap: break-word;
	}
}
</style>
<title>邮件</title>

</head>
<body>
<h1>邮件</h1>

<ul>
<li><p><a href="#configuration">配置</a></p></li>
<li><p><a href="#basic-usage">基本用法</a></p></li>
<li><p><a href="#embedding-inline-attachments">嵌入内联附件</a></p></li>
<li><p><a href="#queueing-mail">邮件队列</a></p></li>
<li><p><a href="#mail-and-local-development">邮件与本地开发</a></p></li>
</ul>


<p><a name="configuration"></a></p>

<h2>配置</h2>

<p>Laravel 提供了一个基于流行的 <a href="http://swiftmailer.org">SwiftMailer</a> 类库的简洁的接口。邮件的配置文件位于 <code>app/config/mail.php</code>，包含了一些选项允许您更改 SMTP 服务器地址、端口和凭证，且通过这个类为所有信息发送的表单提供了全局的邮件地址。您可以按照您的意愿使用任何 SMTP 服务器。如果您希望使用 PHP 的 <code>mail</code> 函数发送邮件，您可以在配置文件中更改 <code>driver</code> 为 <code>mail</code>，另外也可使用 <code>sendmail</code> 程序。</p>

<p><a name="basic-usage"></a></p>

<h2>基本用法</h2>

<p><code>Mail::send</code> 函数用来发送一封电子邮件：</p>

<pre><code>Mail::send('emails.welcome', $data, function($message)

{

    $message-&gt;to('foo@example.com', 'John Smith')-&gt;subject('Welcome!');

});
</code></pre>

<p>传递给 <code>send</code> 函数的第一个参数是作为邮件内容的视图的名字。第二个参数是传递给视图的数据，第三个参数是一个闭包允许您指定电子邮件消息的更多选项。</p>

<blockquote><p><strong>注意:</strong> 一个 <code>$message</code> 变量总会传递给邮件视图，允许内嵌附件。所以最好避免在视图中传递一个 <code>message</code> 变量。</p></blockquote>

<p>除了使用 HTML 视图，您也可以指定使用一个纯文本的视图：</p>

<pre><code>Mail::send(array('html.view', 'text.view'), $data, $callback);
</code></pre>

<p>或者，您可以指定使用键名 <code>html</code> 或 <code>text</code> 指定文档的类型：</p>

<pre><code>Mail::send(array('text' =&gt; 'view'), $data, $callback);
</code></pre>

<p>您也可以在邮件消息中指定其他的选项，比如任何副本或附件：</p>

<pre><code>Mail::send('emails.welcome', $data, function($message)

{

    $message-&gt;from('us@example.com', 'Laravel');



    $message-&gt;to('foo@example.com')-&gt;cc('bar@example.com');



    $message-&gt;attach($pathToFile);

});
</code></pre>

<p>将文件附加到一个消息时，您也可以指定文件的 MIME 类型以及显示名称：</p>

<pre><code>$message-&gt;attach($pathToFile, array('as' =&gt; $display, 'mime' =&gt; $mime));
</code></pre>

<blockquote><p><strong>注意:</strong> 传递给 <code>Mail::send</code> 闭包函数的消息实例继承自 SwiftMailer 的消息类，允许您调用这个类的任何方法构建您的电子邮件消息。</p></blockquote>

<p><a name="embedding-inline-attachments"></a></p>

<h2>嵌入内联附件</h2>

<p>在您的电子邮件中嵌入内嵌的图片通常是非常麻烦的，但是，Laravel 提供了一个便利的方式将图片附加到电子邮件中，并且获取相应的 CID。</p>

<p><strong>在邮件视图中嵌入一个图片</strong></p>

<pre><code>&lt;body&gt;

    Here is an image:



    &lt;img src="&lt;?php echo $message-&gt;embed($pathToFile); ?&gt;"&gt;

&lt;/body&gt;
</code></pre>

<p><strong>在邮件视图中嵌入原始数据</strong></p>

<pre><code>&lt;body&gt;

    Here is an image from raw data:



    &lt;img src="&lt;?php echo $message-&gt;embedData($data, $name); ?&gt;"&gt;

&lt;/body&gt;
</code></pre>

<p>注意 <code>$message</code> 变量总是通过 <code>Mail</code> 类传递到邮件视图。</p>

<p><a name="queueing-mail"></a></p>

<h2>邮件队列</h2>

<p>因为发送邮件会大大延长您应用程序的响应时间，许多开发者选择在后台使用队列发送电子邮件。Laravel 利用内置的 <a href="/docs/queues">统一队列接口</a> 使得这个功能很容易实现。把一个邮件消息插入队列，只需要对 <code>Mail</code> 类使用 <code>queue</code> 函数：</p>

<p><strong>邮件消息排队</strong></p>

<pre><code>Mail::queue('emails.welcome', $data, function($message)

{

    $message-&gt;to('foo@example.com', 'John Smith')-&gt;subject('Welcome!');

});
</code></pre>

<p>您可以使用 <code>later</code> 函数指定您想延迟发送邮件消息的时间的秒数：</p>

<pre><code>Mail::later(5, 'emails.welcome', $data, function($message)

{

    $message-&gt;to('foo@example.com', 'John Smith')-&gt;subject('Welcome!');

});
</code></pre>

<p>如果您想指定一个指定的队列或管道来压入您的消息，您可以使用 <code>queueOn</code> 和 <code>laterOn</code> 实现：</p>

<pre><code>Mail::queueOn('queue-name', 'emails.welcome', $data, function($message)

{

    $message-&gt;to('foo@example.com', 'John Smith')-&gt;subject('Welcome!');

});
</code></pre>

<p><a name="mail-and-local-development"></a></p>

<h2>邮件与本地开发</h2>

<p>当开发一个应用程序，需要发送电子邮件时，经常需要在本地或开发环境中禁用发送邮件。要做到这一点，您可以调用 <code>Mail::pretend</code> 函数，或者设置 <code>app/config/mail.php</code> 配置文件中的 <code>pretend</code> 选项为 <code>true</code>。当邮件类在 <code>pretend</code> 模式时，消息将被写入到应用程序的日志文件中，而不是发送给收件人。</p>

<p><strong>开启 Pretend 邮件模式</strong></p>

<pre><code>Mail::pretend();
</code></pre>
</body>
</html>